package com.me.libgdx_test;

import java.util.concurrent.CopyOnWriteArrayList;

import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.utils.Array;

public class ClassBoardHolder extends AbstractClassAssetHolder{
	
	private ClassLogDisplay logger;
	private ClassRefinedAssetHolder asset_board;
	private Point game_dimensions;
	private ClassCreateDungeon dungeon;
	//The board also needs to take in the level, class, race, and unlocked vars.
	//Unlocked vars later
	public ClassBoardHolder(Point game_dimensions, Point screen_dimensions, ClassReferenceDrawable game_vars, 
			ClassTexturePackerLoader sprite_holder, Stage game_stage, ClassSkinReference skin){
		asset_board = new ClassRefinedAssetHolder(game_dimensions, screen_dimensions, game_vars, sprite_holder, game_stage, skin);
		this.game_dimensions = game_dimensions;
		//Array[][] board = new Array[game_dimensions.x][game_dimensions.y];
	}
	
	//public Point get_player(){
	//	return asset_board.get_player();
	//}
	
	public ClassPlaceObjects get_board_parameters(){
		return asset_board.get_dungeon_vars().get_place_objects();
	}
	
	public Point get_refined_position(){
		return asset_board.get_player_refined_location();
	}
	
	public ClassCharacterPlayer get_player_object(){
		return asset_board.get_player_object();
	}
	
	public void push_touch(Touch touch){
		asset_board.push_touch(touch);
	}
	
	public int get_bosses(){
		return asset_board.get_bosses();
	}
	
	public Point get_dimensions(){
		return game_dimensions;
	}
	
	public boolean has_current_animations(){
		return asset_board.has_current_animations();
	}
	
	public void reset_board(){
		asset_board.refresh_board();
	}
	
	public boolean just_moved(){
		return asset_board.just_moved();
	}
	
	public ClassHudObject get_hud_object(){
		return asset_board.get_hud_object();
	}
	
	public ClassSpriteStack get_hud(){
		return asset_board.return_sprite_hud();
	}
	
	public ClassSpriteStack[][] get_board(){
		return asset_board.return_sprite_region();
	}
	
	public ClassSpriteObjectPool get_pool(){
		return asset_board.return_sprite_pool();
	}	
	
	public ClassSpriteObjectPool get_hud_pool(){
		return asset_board.return_hud_pool();
	}	
	
	public CopyOnWriteArrayList<ClassAnimationString> get_text_animations(){
		return asset_board.get_text_animations();
	}
}
